package com.hundsun.cprs.yyt.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * base64图片转换工具包
 * @author linrl
 * @date 2018年3月13日
 */
public class Base64Util {
    
    public static String encodeBase64(byte[] imageByte){
        return new sun.misc.BASE64Encoder().encode(imageByte);  
    }
    
    public static byte[] decodeBase64(String base64Image){
        byte[] bt = null;    
        try {    
            sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();    
            bt = decoder.decodeBuffer(base64Image);    
        } catch (IOException e) {    
            e.printStackTrace();    
        }    
        return bt;
    }
    /**
     * 将文件转成base64 字符串
     * 
     * @param path文件路径
     * @return *
     * @throws Exception
     */
    public static String encodeBase64File(String path) throws Exception {
        File file = new File(path);;
        FileInputStream inputFile = new FileInputStream(file);
        byte[] buffer = new byte[(int)file.length()];
        inputFile.read(buffer);
        inputFile.close();
        return encodeBase64(buffer);
    }

    /**
     * 将base64字符解码保存文件
     * 
     * @param base64Code
     * @param targetPath
     * @throws Exception
     */

    public static void decodeBase64File(String base64Code, String targetPath) throws Exception {
        byte[] buffer = decodeBase64(base64Code);
        FileOutputStream out = new FileOutputStream(targetPath);
        out.write(buffer);
        out.close();
    }

    /**
     * 将base64字符保存文本文件
     * 
     * @param base64Code
     * @param targetPath
     * @throws Exception
     */

    public static void toFile(String base64Code, String targetPath) throws Exception {

        byte[] buffer = base64Code.getBytes();
        FileOutputStream out = new FileOutputStream(targetPath);
        out.write(buffer);
        out.close();
    }

    public static void main(String[] args) {
        try {
            String base64Code = encodeBase64File("D:/333.png");
            System.out.println(base64Code);
            System.out.println(base64Code.length());
            decodeBase64File(base64Code, "D:/444.png");
            toFile(base64Code, "D:\\three.txt");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
